package com.kwum.pattern.FactoryPattern;


/**
 * Description: 动物工厂
 * @author Kwum
 * @date 2017年9月18日 下午4:02:24
 * @version 1.0
 */

public class AnimalFactory {

    //常规方法
    //使用 getAnimal 方法获取形状类型的对象
    public Animal getAnimal(String animal){
       if(animal == null){
          return null;
       }        
       if(animal.equalsIgnoreCase("Dog")){
          return new Dog();
       } else if(animal.equalsIgnoreCase("Cat")){
          return new Cat();
       } else if(animal.equalsIgnoreCase("Duck")){
          return new Duck();
       }
       return null;
    }
    
    //利用反射机制
    public Object getClass(Class<?extends Animal> clazz) {
        Object obj = null;

        try {
            obj = Class.forName(clazz.getName()).newInstance();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

        return obj;
    }
}
